/************************************************************************
 * SMLib - State Model Library
 * Copyright (C) 2012-2013 Ali Khalili (khalili_DOT_ir_@SIGN_gmail_DOT_com)
 * **********************************************************************
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License (LGPL) published 
 * by the Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version. This program is distributed without any
 * warranty. See the GNU Lesser General Public License for more details. 
 * ***********************************************************************
 * File         :     
 * Description  :     
 * Change log   :     
 * To Do        :
 ************************************************************************/
using System;
using SMLib.Automata.Base;

namespace SMLib.Automata.Moore
{
	/// <summary>
	/// Interface for black box Moore machines
	/// </summary>
	public interface IBlackBox_MooreMachine
	{
		/// <summary>
		/// Reset the system to the initial state
		/// </summary>
		void Reset();

		/// <summary>
		/// Do one step
		/// </summary>
		/// <param name="input">input of the system</param>
		void Step(ISymbol input);

		/// <summary>
		/// Gets the current output.
		/// </summary>
		/// <value>The current output.</value>
		ISymbol CurrentOutput {
			get;
		}

		/// <summary>
		/// The input alphabet of the black box system
		/// [usually, we just need the input alphabet and not output alphabet]
		/// </summary>
		Alphabet InputAlphabet
		{
			get;
		}
	}
}

